package main

import "fmt"

//切片是引用类型
func main() {
	a := []int{1, 2, 3, 4}
	fmt.Printf("1. 变量 a 的内存地址：%p, 值为：%v\n\n", &a, a)
	fmt.Printf("数组型变量a的内存地址：%p \n\n", a)

	changeSliceVal(a)
	fmt.Printf("2. changeSliceVal函数调用之后内：变量 a 的内存地址：%p, 值为：%v\n\n", &a, a)
	changeSlicePtr(&a)
	fmt.Printf("3. changeSlicePtr函数调用之后内：变量 a 的内存地址：%p, 值为：%v\n\n", &a, a)
}

func changeSliceVal(a []int) {
	fmt.Printf("--------------changeSliceVal函数内：值参数a的内存地址：%p, 值为：%v \n", &a, a)
	fmt.Printf("--------------changeSliceVal函数内：值参数a的内存地址：%p, \n", a)
	a[0] = 90
}

func changeSlicePtr(a *[]int) {
	fmt.Printf("===========changeSlicePtr函数内：值参数a的内存地址：%p, 值为：%v \n", &a, a)
	(*a)[1] = 250
}
